factorization of algebraic expressions